#pragma once
#ifndef SYPX_BASE
#define SYPX_BASE
///Compiler defines and configuration
///Do not touch any of these unless you know what you are doing


///Visual Studio defines
#ifdef _MSC_VER
	#define _CRT_SECURE_NO_WARNINGS
	#define _CRT_SECURE_NO_DEPRECATE 1 //no thanks MS, we know what we are doing
	#pragma warning( disable: 4251 )// Disable Template DLL warnings (We will use same compiler for both client and DLL)
	#if _MSC_VER >= 1400//If using VS8 or higher
		#ifdef NDEBUG
			#undef	_SECURE_SCL 
			#define _SECURE_SCL 0//disable pointless "feature"
		#endif
	#endif
	

#endif

///DLL import/export settings
#ifdef _WIN32
	#define SYPX_PLATFORM_WIN32
#ifdef SYPX_MEMCHECK
	#define SYPXAPI
#else
	#ifdef BUILDSYPXDLL
	#define SYPXAPI __declspec(dllexport)
	#else
	//This is to be used for the class header file.
	#define SYPXAPI __declspec(dllimport)
	#endif
#endif
#else
///Blank define for other platforms(iphone build is a static library)
	#define SYPXAPI 
#endif

#if TARGET_IPHONE_SIMULATOR
	#define SYPX_PLATFORM_IPHONE
	#define SYPX_PLATFORM_IPHONE_SIMULATOR
#endif

#if TARGET_OS_IPHONE
	#define SYPX_PLATFORM_IPHONE
#endif

///Forward declarations of classes
namespace SypX
{
	class Canvas;	
	class CanvasDesktop;
	class Renderer;
	class RendererGLES1;
	class Mesh;
	struct MeshPart;
	struct Event;
	class Node;
	class MeshInstance;
	class Resource;
	class Texture;
}

#endif